package com.mmy.service.line;

import java.util.List;
import java.util.Map;

import com.mmy.domain.line.TLinePlan;
import com.mmy.domain.line.VLinePlan;



public interface LinePlanService {
	/**
	 * 函数功能说明：通过线路ID查询：未过期的计划单
	 *
	 * @param 参数说明
	 * @return 返回值说明 线路计划单集合
	 * @throws 异常处理说明
	 * @author 创建人liys
	 * @date 创建日期  2021.1.8
	 */
	public List<VLinePlan> findPlanValid(int iLineID,String nowDate);
	/**
	 * 函数功能说明：通过线路ID和时间查询：当天的计划单 
	 *
	 * @param 参数说明
	 * @return 返回值说明 list
	 * @throws 异常处理说明
	 * @author 创建人liys
	 * @date 创建日期  2021.1.11
	 */
	public List<Map<String,Object>> findPlanValidMap(int iLineID,String nowDate);

	/**
	 * 通过计划单ID查询
	 *
	 * @author 创建人 hanxl 整理
	 * @date 创建日期 2020.10.29
	 */
	public VLinePlan findByPlanID(int iPlanID);
	/**
	 * 函数功能说明：通过ID查询计划单
	 *
	 * @param 参数说明
	 * @return 返回值说明 线路计划单对象
	 * @throws 异常处理说明
	 * @author 创建人liys
	 * @date 创建日期  2020.12.24
	 */
	public TLinePlan TfindByPlanID(int planID);
	/**
	 * 函数功能说明： 查询所有近郊游计划单
	 *
	 * @param 参数说明
	 * @return 返回值说明 线路计划单集合
	 * @throws 异常处理说明
	 * @author 创建人 hanxl 修改人 shangzl
	 * @date 创建日期 修改时间 2020.11.18
	 */
	public List<VLinePlan> findAllSurrouding();

	/**
	 * 函数功能说明： 查询所有境内游计划单
	 *
	 * @param 参数说明
	 * @return 返回值说明 线路计划单集合
	 * @throws 异常处理说明
	 * @author 创建人 hanxl 修改人 shangzl
	 * @date 创建日期 修改时间 2020.11.18
	 */
	public List<VLinePlan> findAllDomestic();

	/**
	 * 函数功能说明：查询所有境外游计划单
	 *
	 * @param 参数说明
	 * @return 返回值说明 线路计划单集合
	 * @throws 异常处理说明
	 * @author 创建人 hanxl 修改人 shangzl
	 * @date 创建日期 修改时间 2020.11.18
	 */
	public List<VLinePlan> findAllOutbound();
	/**
	 * 函数功能说明：查询所有目的地游计划单
	 *
	 * @param 参数说明
	 * @return 返回值说明 线路计划单集合
	 * @throws 异常处理说明
	 * @author 创建人 hanxl 修改人 shangzl
	 * @date 创建日期 修改时间 2020.11.18
	 */
	public List<VLinePlan> findAllDestination();

	/**
	 * 函数功能说明：通过线路ID查询计划单
	 *
	 * @param 参数说明
	 * @return 返回值说明 线路计划单集合
	 * @throws 异常处理说明
	 * @author 创建人 hanxl 修改人 shangzl
	 * @date 创建日期 修改时间 2020.11.18
	 */
	public List<VLinePlan> findByLineID(int iLineID);
	/**
	 * 函数功能说明：通过线路ID查询有效的计划单（未过期）
	 *
	 * @param 参数说明
	 * @return 返回值说明 线路计划单集合
	 * @throws 异常处理说明
	 * @author 创建人 hanxl 修改人 shangzl
	 * @date 创建日期 修改时间 2020.11.18
	 */
	public List<VLinePlan> findByLineIdNow(int iLineID,String nowDate);
	/**
	 * 获取计划单最大编码
	 * 
	 * @return 返回值说明 计划单编码
	 * @author 创建人 dingxd
	 * @date 创建日期 2020.11.13
	 */
	public String getMaxPlanID();
	// TODO delete
	// /* 获取近郊游计划单最大值 */
	// public Object getSurroundingMaxPlanID() {
	//
	// return tLinePlanRepository.getSurroundingMaxPlanID();
	// }
	//
	// /* 获取境内游计划单最大值 */
	// public Object getDomesticMaxPlanID() {
	//
	// return tLinePlanRepository.getDomesticMaxPlanID();
	// }
	//
	// /* 获取境外游计划单最大值 */
	// public Object getOutboundMaxPlanID() {
	//
	// return tLinePlanRepository.getOutboundMaxPlanID();
	// }
	//
	// /* 获取目的地游计划单最大值 */
	// public Object getDestinationMaxPlanID() {
	//
	// return tLinePlanRepository.getDestinationMaxPlanID();
	// }

	/**
	 * 函数功能说明：创建计划单
	 *
	 * @param 参数说明
	 * @return 返回值说明 无返回值
	 * @throws 异常处理说明
	 * @author 创建人 hanxl 修改人 shangzl
	 * @date 创建日期 修改时间 2020.11.18
	 */
	public void save(int planID);

	/**
	 * 函数功能说明：创建 修改计划单
	 *
	 * @param 参数说明
	 * @return 返回值说明 无返回值
	 * @throws 异常处理说明
	 * @author 创建人 hanxl 修改人 shangzl
	 * @date 创建日期 修改时间 2020.11.18
	 */
	public void save(TLinePlan tLinePlan);


	/**
	 * 函数功能说明：删除计划单
	 *
	 * @param 参数说明
	 * @return 返回值说明 无返回值
	 * @throws 异常处理说明
	 * @author 创建人 hanxl 修改人 shangzl
	 * @date 创建日期 修改时间 2020.11.18
	 */
	public void delLinePlan(List<Integer> lstPlanID);

}
